package com.example.my_self_view.pdf

import android.graphics.Bitmap
import android.graphics.pdf.PdfRenderer
import android.os.Bundle
import android.os.Environment
import android.os.ParcelFileDescriptor
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import com.example.my_self_view.R
import java.io.File

/**
 * @dsc     简介
 * @Author  LiWeiZhong
 * @Date    2025/2/25 10:25
 * @Version 1.0
 */
class PdfActivity: AppCompatActivity() {

    // 用于显示渲染后的 PDF 页面
    private lateinit var imageView: ImageView
    // PDF 渲染器
    private lateinit var pdfRenderer: PdfRenderer
    // 当前页面
    private lateinit var currentPage: PdfRenderer.Page

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_pdf)

        imageView = findViewById(R.id.pdf)

        try {
            // 打开 PDF 文件
            val pdfFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "sample.pdf")
            if (pdfFile.exists() && pdfFile.isFile) {
                openPdf(pdfFile)
            }
        } catch (e: java.lang.Exception) {
            e.printStackTrace()
        }
    }

    // 打开 PDF 文件并渲染第一页
    private fun openPdf(pdfFile: File) {
        val fileDescriptor = ParcelFileDescriptor.open(pdfFile, ParcelFileDescriptor.MODE_READ_ONLY)
        pdfRenderer = PdfRenderer(fileDescriptor)

        // 获取 PDF 中的第一页
        if (pdfRenderer.pageCount > 0) {
            // 打开第一页
            currentPage = pdfRenderer.openPage(2)
            // 创建一个空白的 Bitmap 来渲染页面
            val bitmap = Bitmap.createBitmap(currentPage.width, currentPage.height, Bitmap.Config.ARGB_8888)
            // 渲染页面到 Bitmap
            currentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY)
            // 显示渲染结果
            imageView.setImageBitmap(bitmap)
        }
    }

}